package entidadesBD;

import java.sql.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

import entidadesVO.*;

@Entity
@DiscriminatorValue("ACCESORIO")
public class Accesorio extends Articulo{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String seccion;
	private String nombre;
	private Medida medida;
	private String categoria;

	public Accesorio(String descripcion, float precio, float descuento, String referencia, String color, String linea, Date fechaDeIngreso, String seccion, String nombre, Medida medida, String categoria, int mesDeDescuento) {
		super(descripcion, precio, descuento, referencia, color, linea, fechaDeIngreso, mesDeDescuento);
		this.seccion = seccion;
		this.nombre = nombre;
		this.medida = medida;
		this.categoria = categoria;
	}
	/*
	 * Constructor Vacio
	 */
	public Accesorio(){
		
	}
	
	@Column
	public String getCategoria() {
		return categoria;
	}
	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	@OneToOne
	@JoinColumn(name="medida")
	public Medida getMedida() {
		return medida;
	}
	public void setMedida(Medida medida) {
		this.medida = medida;
	}

	@Column
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column
	public String getSeccion() {
		return seccion;
	}
	public void setSeccion(String seccion) {
		this.seccion = seccion;
	}
	
	@Transient
	public AccesorioVO getAccesorioVO(){
		
		AccesorioVO accesorioVO = new AccesorioVO(descripcion, precio, descuento, referencia, color, linea, fechaDeIngreso, seccion, nombre, medida.getMedidaVO(), categoria, mesDeDescuento);
		accesorioVO.setCodigoArticulo(codigoArticulo);
		accesorioVO.setNuevo(nuevo);
		
		Set<CentroDistribucionVO> centrosDeDistribucionVO = new HashSet<CentroDistribucionVO>();
		Object[] centrosDeDistribucionArray = centrosDeDistribucion.toArray();
		
		for (int i = 0; i < centrosDeDistribucionArray.length; i++){
			CentroDistribucion centroDistribucion = (CentroDistribucion)centrosDeDistribucionArray[i];
			CentroDistribucionVO centroDistribucionVO = centroDistribucion.getCentroDistribucionVO();
			centrosDeDistribucionVO.add(centroDistribucionVO);
		}
		accesorioVO.setCentrosDeDistribucion(centrosDeDistribucionVO);
		
		Set<ArticuloComponentesVO> articuloComponentesVO = new HashSet<ArticuloComponentesVO>();
		Object[] articuloComponentesArray = articuloComponentes.toArray();
		
		for (int i = 0; i < articuloComponentesArray.length; i++){
			ArticuloComponentes articuloComponentes = (ArticuloComponentes)articuloComponentesArray[i];
			ArticuloComponentesVO articuloComponenteVO = articuloComponentes.getArticuloComponentesVO();
			articuloComponentesVO.add(articuloComponenteVO);
		}
		accesorioVO.setArticuloComponentes(articuloComponentesVO);
		
		accesorioVO.setMedida(medida.getMedidaVO());
		
		return accesorioVO;
	}
	
	public void setAccesorio(AccesorioVO accesorioVO){
		this.descripcion = accesorioVO.getDescripcion();
		this.precio = accesorioVO.getPrecio();
		this.descuento = accesorioVO.getDescuento();
		this.referencia = accesorioVO.getReferencia();
		this.color = accesorioVO.getColor();
		this.linea = accesorioVO.getLinea();
		this.fechaDeIngreso = accesorioVO.getFechaDeIngreso();
		//Se ingresa el valor utilizando metodos Setter
		//this.nuevo = accesorioVO.getNuevo();
		this.mesDeDescuento = accesorioVO.getMesDeDescuento();
		this.seccion = accesorioVO.getSeccion();
		this.nombre = accesorioVO.getNombre();
		this.categoria = accesorioVO.getCategoria();
	}
}
